home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 22 / AACD 22.iso / AACD / Sound / mhi_dev / MASPro / Source / mas3507.s < prev    next >
Encoding:
Text File  |  2001-03-28  |  3.6 KB  |  223 lines

  1.     xdef    _SetupParPort
  2.     xdef    _SetVolume
  3.     xdef    _SetPrefactor
  4.     xdef    _SetBass
  5.     xdef    _SetTreble
  6.  
  7. _SetupParPort
  8. ;Set the parallel port hardware up
  9.  
  10.     MOVE.B  #%00000000,$bfd200
  11.     MOVE.B  #%00000011,$bfe101
  12.     MOVE.B  #%00010011,$bfe301        ; Reset on
  13.     MOVE.B  #%00000011,$bfe301        ; Reset off
  14.     MOVE.B  #%00000011,$bfe101
  15.  
  16.     rts
  17.  
  18. _SetVolume
  19. ;Set the overall volume level
  20. ;d0 - volume level
  21.  
  22. ;  MOVEM   d0-d7/a0-a6,-(a7)
  23.  
  24.   MOVE.l  d0,d2
  25.   MOVE.w  d2,d3
  26.   LSR.w   #8,d3
  27.   MOVE.l  d2,d4
  28.   SWAP    d4
  29.  
  30.   LEA     $BFE301,A1
  31. VolumeS_LL
  32.   BSR     Write_IIC_S
  33.   MOVE.B  #$3A,D0
  34.   BSR     Write_IIC_D0
  35.   MOVE.B  #$68,D0
  36.   BSR     Write_IIC_D0
  37.   MOVE.B  #$B0,D0
  38.   BSR     Write_IIC_D0
  39.   MOVE.B  #$00,D0
  40.   BSR     Write_IIC_D0
  41.   MOVE.B  #$00,D0
  42.   BSR     Write_IIC_D0
  43.   MOVE.B  #$01,D0
  44.   BSR     Write_IIC_D0
  45.   MOVE.B  #$07,D0
  46.   BSR     Write_IIC_D0
  47.   MOVE.B  #$F8,D0
  48.   BSR     Write_IIC_D0
  49.   MOVE.B  D3,D0
  50.   BSR     Write_IIC_D0
  51.   MOVE.B  D2,D0
  52.   BSR     Write_IIC_D0
  53.   MOVE.B  #$00,D0
  54.   BSR     Write_IIC_D0
  55.   MOVE.B  D4,D0
  56.   BSR     Write_IIC_D0
  57.   BSR     Write_IIC_P
  58.  
  59. VolumeS_RR
  60.   BSR     Write_IIC_S
  61.   MOVE.B  #$3A,D0
  62.   BSR     Write_IIC_D0
  63.   MOVE.B  #$68,D0
  64.   BSR     Write_IIC_D0
  65.   MOVE.B  #$B0,D0
  66.   BSR     Write_IIC_D0
  67.   MOVE.B  #$00,D0
  68.   BSR     Write_IIC_D0
  69.   MOVE.B  #$00,D0
  70.   BSR     Write_IIC_D0
  71.   MOVE.B  #$01,D0
  72.   BSR     Write_IIC_D0
  73.   MOVE.B  #$07,D0
  74.   BSR     Write_IIC_D0
  75.   MOVE.B  #$FB,D0
  76.   BSR     Write_IIC_D0
  77.   MOVE.B  D3,D0
  78.   BSR     Write_IIC_D0
  79.   MOVE.B  D2,D0
  80.   BSR     Write_IIC_D0
  81.   MOVE.B  #$00,D0
  82.   BSR     Write_IIC_D0
  83.   MOVE.B  D4,D0
  84.   BSR     Write_IIC_D0
  85.   BSR     Write_IIC_P
  86.  
  87. ;  BRA     iic_exit
  88.     rts
  89.  
  90. _SetPrefactor
  91. ;d0 - prefactor level
  92.  
  93. ;  MOVEM   d0-d7/a0-a6,-(a7)
  94.  
  95.   MOVE.w  d0,d2
  96.   MOVE.w  d2,d3
  97.   LSR.w   #8,d3
  98.  
  99.   LEA     $BFE301,A1
  100.   BSR     Write_IIC_S
  101.   MOVE.b  #$3a,d0
  102.   BSR     Write_IIC_D0
  103.   MOVE.b  #$68,d0
  104.   BSR     Write_IIC_D0
  105.   MOVE.b  #$9E,d0
  106.   BSR     Write_IIC_D0
  107.   MOVE.b  #$70,d0
  108.   BSR     Write_IIC_D0
  109.   MOVE.b  d3,d0
  110.   BSR     Write_IIC_D0
  111.   MOVE.b  d2,d0
  112.   BSR     Write_IIC_D0
  113.   BSR     Write_IIC_P
  114.  
  115. ;  BRA     iic_exit
  116.     rts
  117.  
  118. _SetBass
  119. ;d0 - bass
  120.  
  121. ;    MOVEM   d0-d7/a0-a6,-(a7)
  122.     move.b    #$b0,d4
  123.     jmp        go
  124.  
  125. _SetTreble
  126. ;d0 - treble
  127.  
  128. ;    MOVEM   d0-d7/a0-a6,-(a7)
  129.     move.b    #$f0,d4
  130.  
  131. go
  132.  
  133.   MOVE.w  d0,d2
  134.   MOVE.w  d2,d3
  135.   LSR.w   #8,d3
  136.  
  137.   LEA     $BFE301,A1
  138.   BSR     Write_IIC_S
  139.   MOVE.b  #$3a,d0
  140.   BSR     Write_IIC_D0
  141.   MOVE.b  #$68,d0
  142.   BSR     Write_IIC_D0
  143.   MOVE.b  #$96,d0
  144.   BSR     Write_IIC_D0
  145.   MOVE.b  d4,d0
  146.   BSR     Write_IIC_D0
  147.   MOVE.b  d3,d0
  148.   BSR     Write_IIC_D0
  149.   MOVE.b  d2,d0
  150.   BSR     Write_IIC_D0
  151.   BSR     Write_IIC_P
  152.  
  153. ;  BRA     iic_exit
  154.     rts
  155.  
  156.  
  157.  
  158. Write_IIC_S
  159.   BSR     Wait_IIC
  160.   MOVE.B  #%00000011,(a1)
  161.   BSR     Wait_IIC
  162.   MOVE.B  #%00001011,(a1)
  163.   BSR     Wait_IIC
  164.   MOVE.B  #%00001111,(a1)
  165.   RTS
  166.  
  167. Write_IIC_P
  168.   BSR     Wait_IIC
  169.   MOVE.B  #%00001111,(a1)
  170.   BSR     Wait_IIC
  171.   MOVE.B  #%00001011,(a1)
  172.   BSR     Wait_IIC
  173.   MOVE.B  #%00000011,(a1)
  174.   RTS
  175.  
  176. Write_IIC_1
  177.   BSR     Wait_IIC
  178.   MOVE.B  #%00001111,(a1)
  179.   BSR     Wait_IIC
  180.   MOVE.B  #%00000111,(a1)
  181.   BSR     Wait_IIC
  182.   MOVE.B  #%00000011,(a1)
  183.   BSR     Wait_IIC
  184.   MOVE.B  #%00000111,(a1)
  185.   BSR     Wait_IIC
  186.   MOVE.B  #%00001111,(a1)
  187.   RTS
  188.  
  189. Write_IIC_0
  190.   BSR     Wait_IIC
  191.   MOVE.B  #%00001111,(a1)
  192.   BSR     Wait_IIC
  193.   MOVE.B  #%00001111,(a1)
  194.   BSR     Wait_IIC
  195.   MOVE.B  #%00001011,(a1)
  196.   BSR     Wait_IIC
  197.   MOVE.B  #%00001111,(a1)
  198.   BSR     Wait_IIC
  199.   MOVE.B  #%00001111,(a1)
  200.   RTS
  201.  
  202. Write_IIC_D0
  203.     Moveq.L    #9,D1
  204. Write_Loop
  205.     Subq.B    #1,D1
  206.     Beq.b    Write_IIC_0
  207.     Rol.B    #1,D0
  208.     Btst    #0,D0
  209.     Beq.b    Write_0
  210.     Bsr.b    Write_IIC_1
  211.     Bra.b    Write_Loop
  212. Write_0
  213.     Bsr.b    Write_IIC_0
  214.     Bra.b    Write_Loop
  215.  
  216. Wait_IIC
  217.   MOVEM.L D0-D1,-(SP)
  218.   MOVE.L  #40,d0
  219. wicloop
  220.   MOVE.B  $bfe301,d1
  221.   DBRA    D0,wicloop
  222.   MOVEM.L (SP)+,D0-D1
  223.   RTS